from django.core import validators

from .models import Article
from django import forms


# 留言板表单
class MessageBoardForm(forms.Form):
    title = forms.CharField(min_length=2,max_length=20, label='标题',
                            error_messages={"min_length":"标题长度不能小于2",
                                            "max_length":"标题长度最大不能超过20"
                            })
    content = forms.CharField(widget=forms.Textarea, label="内容")
    email = forms.EmailField(label="邮箱")


class RegisterForm(forms.Form):
    # 正则表达式解释
    # 1：正则表达式的开头部分表示手机号应该以 1 开头。这是中国大陆手机号的标准格式，手机号必须以 1 开头。
    # [345678]：这是一个字符集（Character Class），表示第二位的数字可以是 3、4、5、6、7 或 8，即手机号第二位的数字只能是这六个数字之一。
    # \d{9}：\d 表示数字字符，{9} 表示匹配 9 次。所以 \d{9} 表示接下来的 9 个字符必须是数字，即手机号的后 9 位
    telephone = forms.CharField(validators=[validators.RegexValidator(r"1[345678]\d{9}",message="手机号码格式不符合")])

    pwd1 = forms.CharField(min_length=6, max_length=100)
    pwd2 = forms.CharField(min_length=6, max_length=100)

    # clean_[field]
    def clean_telephone(self):
        telephone = self.cleaned_data.get('telephone')
        # 从数据库中查找telephone是否存在，如果存在，那么抛出验证错误
        if telephone == '18888888888':
            raise forms.ValidationError('手机号码已经存在')
        else:
            return telephone

    # 重写clean方法
    def clean(self):
        cleaned_data = super().clean()
        pwd1 = cleaned_data.get('pwd1')
        pwd2 = cleaned_data.get('pwd2')
        if pwd1 != pwd2:
            raise  forms.ValidationError("两次密码不一致")
        else:
            return cleaned_data

class ArticleForm1(forms.ModelForm):
    class Meta:
        model = Article
        fields = "__all__"